中国电信营业厅: 感受 Kotlin 的 "加速度"
"我们手上是一个很成熟的项目,所以毫无疑问需要保留 Java 代码,目前只会在新开发的页面中使用 Kotlin,并已经感受到了它带来的便利。随着功能的迭代,我们相信更多的功能会转而使用 Kotlin。" —— 付迎鑫,电信营业厅技术负责人
电信营业厅应用的技术团队所面临的挑战,基本都和 "速度" 有关:
电信营业厅 app 不是简单的工具应用,而是中国电信在线服务的官方品牌,并基于这个定位打造成了包括电商、互联网直播、阅读、音乐、影视、游戏、资讯、生活服务、公益事业的综合服务平台。要确保如此繁多的功能都流畅稳定地运行,对技术团队的开发效率都有十分高的要求。
庞大的用户群体也使得应用运行的硬件和平台十分多样,技术团队需要跟得上用户们更换新设备、更新操作系统的速度。
大型应用自然也会有庞大的历史资产,一旦需要对这些资产进行迭代,也需要尽可能降低时间成本。
第一脚油门总是需要慎重
△ 电信营业厅技术团队核心成员于谷歌开发者大会。
"目前来看,项目整体已经有 20% 在使用 Kotlin,开发新功能的话 50% 的代码都是 Kotlin。" —— 付迎鑫,电信营业厅技术负责人
开得快,开得稳
是时候看看远方的风景了
使用 Kotlin 带来的另一个好处,就是进入 Android 平台新功能的 "快车道"。
比如 Android 10 的时候平台增加了对折叠屏设备的支持,但想要让用户在折叠/展开设备时感觉流畅,免不了需要让应用妥善保存界面状态和支持配置变更,用 Java 编写这种 "保存/读取配置" 的工作虽然可行,但 Kotlin 的 lambda 解构方式能够帮助开发者更加方便地对需要保存的实体类和相关配置进行修改和读取,代码更加精简,可读性也更好。
网络连接 API https://developer.android.google.cn/reference/android/net/ConnectivityManager 识别非计费状态 https://developer.android.google.cn/reference/android/net/NetworkCapabilities.html#NET_CAPABILITY_NOT_METERED
来自团队的经验分享
从接触、了解 Kotlin,到逐步尝试,乃至正式采用,电信营业厅技术团队总结了一些第一手的经验,这里和大家分享。
在使用 Kotlin 前,首先要对项目组成员对 Kotlin 的熟悉程度做一个简单的评估。对于新项目来说,需要对项目本身工作量进行评估,如果时间规划上比较充裕,可以考虑引入 Kotlin,这也可以让开发团队在实践中更加了解 Kotlin;而对于老项目来说,就需要综合考虑兼容性、稳定性、维护性等其他相关因素。
需要为兼容性相关问题多预留一些解决时间,尤其是项目组成员对 Kotlin 还不那么熟悉的时候。
如果在开发过程中发现最新的 Kotlin 需要升级到 AndroidX,需要慎重推进。因为升级 AndroidX 又会和很多第三方库产生冲突,这时只能通过与第三方进行协调来解决问题。
"我们会继续加大在 Kotlin 上的投入,目标是在新项目中 100% 使用 Kotlin。" —— 付迎鑫,电信营业厅技术负责人
更简洁、更高效、更现代的 Kotlin,已经让电信营业厅技术团队感受到了真实的 "加速度"。您是否已经准备好进入 Android 开发的 "快车道" 了呢?
推荐阅读